/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.model.service;

import com.model.domain.persona.Encuestador;
import com.model.domain.persona.Hogar;
import com.model.domain.enaho.reporte.ListadosReporte;
import com.model.domain.enaho.reporte.ReporteRecojoDatosDetalle;
import com.model.domain.enaho.reporte.ReporteRecojoDatosResumen;
import com.model.domain.tiempo.Mes;
import com.model.domain.tiempo.Periodo;
import com.model.domain.ubicacion.Conglomerado;
import com.model.domain.ubicacion.Odei;
import com.model.domain.ubicacion.ViviendaMarco;
import java.sql.Connection;
import java.util.List;

/**
 *
 * @author Rdelacruz
 */
public class ReporteTransferenciaService
        extends AbstractService {

    private OdeiService odeiService;
    private MesService mesService;
    private PeriodoService periodoService;
    private ViviendaMarcoService viviendaMarcoService;
    private ViviendaService viviendaService;
    private ConglomeradoService conglomeradoService;
    private EncuestadorService encuestadorService;
    private HogarService hogarService;



    public List<Odei> getListaOdeis(Connection con) throws Exception {
        return odeiService.findAll(con);
    }

    public List<Mes> getListaMeses(Connection con) throws Exception {
        //return new ArrayList<>();
        return mesService.findAll(con);
    }

    public List<Periodo> getListaPeriodos(Connection con) throws Exception {
        //return new ArrayList<>();
        return periodoService.findAll(con);
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    public List<Conglomerado> getListaConglomerados(Connection con) throws Exception {
        return conglomeradoService.findAll_codigo(con);
    }
    
    public List<Encuestador> getListaEncuestadores(Connection con) throws Exception {
        return encuestadorService.findEncuestadores_codigoNombreCargo(con);
    }
    
    public List<ViviendaMarco> getListaViviendasMarcoParaGeoreferenciacion(Connection con, List<Odei> odeis, Conglomerado filtro) throws Exception {
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        return viviendaMarcoService.findViviendasMarcoParaGeoreferenciacion(con,listados,filtro);
    }
  
    public ReporteRecojoDatosResumen getReporteRecojoDatosResumen(
            Connection con,
            Conglomerado filtro,
            List<Odei> odeis,
            List<Mes> meses,
            List<Periodo> periodos) throws Exception {

        //1. CONTRUYENDO OBJETOS AUXILIARES
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        listados.setMeses(meses);
        listados.setPeriodos(periodos);
        
        //2. CONSTRUYENDO EL REPORTE        
        ReporteRecojoDatosResumen rep = new ReporteRecojoDatosResumen();
        
        //Hasta columna Porcentaje de avances (RESULTADOS A NIVEL DE VIVIENDAS)
        viviendaMarcoService.procesarParte1(con, filtro,rep, listados);
        
        //Columnas de resultado de hogares (RESULTADOS A NIVEL DE HOGARES)
        hogarService.procesarParte2(con, rep, listados);
        
        return rep;
    }
    
    public ReporteRecojoDatosDetalle getReporteRecojoDatosDetalle(Connection con, 
            Hogar filtro,
            List<Odei> odeis, List<Mes> meses, List<Periodo> periodos, 
            List<Conglomerado> conglomerados, List<Encuestador> encuestadores) throws Exception {   
        
        //1. CONTRUYENDO OBJETOS AUXILIARES
        ListadosReporte listados = new ListadosReporte();
        listados.setOdeis(odeis);
        listados.setMeses(meses);
        listados.setPeriodos(periodos);
        listados.setConglomerados(conglomerados);
        listados.setEncuestadores(encuestadores);
                
        //2. CONSTRUYENDO EL REPORTE 
        ReporteRecojoDatosDetalle rep = new ReporteRecojoDatosDetalle();
        hogarService.procesar(con,rep,filtro, listados);       
        return rep;
    }
        
    

    public OdeiService getOdeiService() {
        return odeiService;
    }

    public void setOdeiService(OdeiService odeiService) {
        this.odeiService = odeiService;
    }

    public MesService getMesService() {
        return mesService;
    }

    public void setMesService(MesService mesService) {
        this.mesService = mesService;
    }

    public ViviendaMarcoService getViviendaMarcoService() {
        return viviendaMarcoService;
    }

    public void setViviendaMarcoService(ViviendaMarcoService viviendaMarcoService) {
        this.viviendaMarcoService = viviendaMarcoService;
    }

    public ViviendaService getViviendaService() {
        return viviendaService;
    }

    public void setViviendaService(ViviendaService viviendaService) {
        this.viviendaService = viviendaService;
    }

    public PeriodoService getPeriodoService() {
        return periodoService;
    }

    public void setPeriodoService(PeriodoService periodoService) {
        this.periodoService = periodoService;
    }

    public ConglomeradoService getConglomeradoService() {
        return conglomeradoService;
    }

    public void setConglomeradoService(ConglomeradoService conglomeradoService) {
        this.conglomeradoService = conglomeradoService;
    }

    public EncuestadorService getEncuestadorService() {
        return encuestadorService;
    }

    public void setEncuestadorService(EncuestadorService encuestadorService) {
        this.encuestadorService = encuestadorService;
    }

    public HogarService getHogarService() {
        return hogarService;
    }

    public void setHogarService(HogarService hogarService) {
        this.hogarService = hogarService;
    }





}
